/*
 * @Description: 
 * @Author: rendc
 * @Date: 2024-10-16 10:53:20
 * @LastEditors: rendc
 * @LastEditTime: 2024-10-17 15:02:20
 */

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

/**
 * Test2 - 可以试用10次的软件
 */
public class Test2 {

  // 软件最大试用次数 - ?java方法内部不能有静态变量?
  private static final int MAX_COUNT = 10;
  static {
    // checkCount();
  }

  // 定义检查次数的方法
  private static void checkCount() throws Exception {
    // 读取存储次数的文件 -
    // 提前创建好，如果文件被误删除，系统可以自动创建
    String filePath = "/Users/cc/Desktop/Java/day34/homework/Q8/config.properties";
    File file = new File(filePath);
    System.out.println("file: " + file);
    // 创建配置文件工具类对象
    Properties properties = new Properties();
    // 加载配置文件
    InputStream is = new FileInputStream(file);
    // 加载键值对
    properties.load(is);
    // 解析键值对
    System.out.println(properties.getProperty("count"));
    System.out.println(properties.getProperty("username"));
    // 输出使用次数

    // 使用次数++
    properties.setProperty("count", "5");
    System.out.println(properties.getProperty("count"));
    // 将配置文件工具类对象的值写回文件
    OutputStream os = new FileOutputStream(file);
    properties.store(os, "first commit");

    os.close();
    is.close();

  }

  // 记录使用次数的方法
  private static void writeCount(BufferedWriter bw, int count) {
    try {
      bw.write(String.valueOf(count));
      bw.flush();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // 显示可用次数
  private static void showCount(int count) {
    System.out.println("您已使用次数：" + count + "次，还剩" + (MAX_COUNT - count) + "次使用机会。");
  }

  // 软件主入口
  public static void main(String[] args) throws Exception {
    // 如果现在有⼀款只能试⽤10次的软件，超过10次之后就需要提醒⽤户购买正版软件。（程序运⾏⼀次，使⽤次数就要减⼀次）
    // 提示：将试⽤的次数写到⼀个⽂件中，每次启动时对其进⾏读取并进⾏判断。
    System.out.println("欢迎使用本公司软件系统！现在是北京时间：");
    checkCount();
  }
}